<?php
$gm_main = $encode->encode("cmd=gm&sid=$sid");
$html = <<<HTML
以下！！！代表未施工
<h4>1、基本信息
</h4>这里定义游戏的各种最基本的信息，如：游戏名称、游戏简介、游戏状态、宠物出战和组队人数上限、以及人物帮派技能升级公式和升级条件、默认技能和入口场景等，还有玩家的升级公式等也在这里定义。关于升级公式，涉及到表达式知识，将在后面介绍。。

2、定义属性
这里可以定义人物、NPC、物品、场景、技能等的公共属性。
例如，如果给NPC属性定义了【年龄】属性，那么，在设计具体的电脑
人物基本属性时，就有【年龄】一项可供定义。
举例说明：
1.属性标识就是属性的ID，你可以设置为任何英文名，如age
2.属性名称就是属性的名称，如【年龄】
3.值类型，数值类为int型数字，字符串为varchar型字符串，逻辑值为tinyint型默认0为false、1为true，一般选择【数值类】
4.初始值：就是一个初始的数字，如0
5.是否显示：就是这个属性会不会显示在页面上
注：系统关键属性为不可删除，属性与属性之间支持上下移动位置

3、定义装备类别
可以定义兵器和防具的类别，定义完成后便可以在物品设计中将兵器和防具的子类别设置为定义的装备类别。

4、定义表达式
定义一些全局可引用的表达式，表达式分类别，分别为数值、条件、文本类型，如定义一个id为exp_xishu的数值为2 的表达式，在其他地方就可以使用{e.exp_xishu}
来引用这个表达式。全局表达式主要用于定义一些可能会经常变更的系数，而这个系数又会被用在很多地方的时候，想
修改这个系数就只需要修改这个全局表达式了。

5、定义技能
若定义的技能没有赋予初值，则会默认使用技能默认值。技能的属性包括：伤害目标，消耗目标，伤害值公式，消耗值
公式、使用一次增加熟练度、使用效果描述等等，并且还能定义该技能的使用事件和升级事件。

6、定义公共事件
这里可以定义NPC和玩家的一些公共事件。例如可以在玩家的“注册事件”里，在给玩家加一些钱，给一些初始的基本道具等。

7、设计地图
可以设计地图的区域，用以区分地图板块，分区下可设计具体场景。

8、设计物品
分为消耗品、兵器、防具、书籍、任务物品、其它，其中兵器和防具还有子类别。

9、设计电脑人物
可以在某个区域下管理NPC信息。

10、设计者管理
可以为游戏增加设计者帐号。

11、关于表达式
表达式是游戏里非常重要的概念。
设计时有5个可以引用的对象，分别为
u：代表主动方，一般指代玩家，在战斗中可能会是对方
o：代表被动方，在场景时是场景id，NPC时是NPCid，物品时是物品id，战斗中对方视角下玩家变成o。
m：代表技能、帮派对象等
c：代表系统对象
e：代表公共表达式
g：代表公共数据
我们用一个例子来说明表达式：
如玩家的升级公式：({u.lvl}+1)*({u.lvl}+1)*({u.lvl}+11)+200
升级公式都是和经验(exp)相关的，意思就是，当玩家的经验达到以上的表达式的值时，就升级。{u.lvl}的意思是取到
玩家的等级(请到玩家的属性设置里查看玩家各个属性的id)。当玩家现在是2级时，当经验达到 (2+1)*(2+1)*(2+11)+200
时，玩家就会升级。
*代表乘
/代表除
+代表加
-代表减

另外还有条件表达式的概念，如玩家的升级条件为 {u.lvl}<75，意思是，当玩家的等级小于75时可以升级，否则就不能
升级，也就是说封顶75级。

另外举一个技能伤害公式的例子：{u.lvl}*({m.lvl}+10)*{m.mod}+{u.gj}-{o.fy}
这里u表示攻击方（主动方）、o表示被攻击方（被动方）、m表示技能、m.mod是技能伤害系数

一些内置属性（用u为例子，也可以是o代表被动方）：
{u.gj}：代表对象的兵器杀伤力
{u.fy}：代表对象的防具防御力
{r.***}：代表一个随机数，即会得到一个 0~*** 之间的一个随机整数，***最终结果必须是一个数，如{r.100}表示得到0~99之间一个随机整数。
{ut/ot.***}：表示一个临时的属性，可以设置对象的临时属性，临时属性在用户退出游戏后就失效。
{u.burthen}：用户的当前负重。
{u.max_burthen}：用户的最大负重。
{u.ic.物品id}：用户身上某个物品的数量，如u.ic.i1。
{u.jv.技能id}：用户的某项技能的等级，如u.jv.j1。
{u.tasks.任务id}：表示用户身上是否有某个任务，如果为1表示有某个任务，为 2则表示已经完成了此任务。为0表示没有此任务，如u.tasks.t1，特别的，办事任务一接受就视为完成，{u.tasks.t*}取值都为2。
{u.is_pve}为1时表示正在战斗中

！！！{u.is_pk}为1是pk
！！！{u.is_practice}为1是比武
！！！{u.is_polemical}为1是发起pk者
！！！{u.callout_adopt_count}获得放出宠物的数量
！！！{u.callout_adopt.n.xx}获得放出的第n个宠物的xx属性
！！！{u.adopt_count}获得拥有宠物的数量
！！！{u.is_adopt}为1时表示是宠物


{ut.busy}{ot.busy}可以设置几回合内不能出招（忙）
！！！给玩家设置heart_beat=60表示每60秒执行一次心跳事件，最少要60秒

表达式变量嵌套一层的功能如：{u.skills.v(m.id).lvl}，v(...)表示取括号内变量的值作为外层变量名称的一部分
设置和更改值时可以支持变量如：u.v(u.input.id) = 1

！！！在战败后不死亡的npc的创建事件中设置ut.do_drops=1就会一直掉落物品(死后掉落定义里的经验、物品和钱)
！！！可以使用{u.skills.skill_id.name}获得人物的某个技能的属性，其中skill_id为某个技能id，name为属性名称，如{u.skills.j1.lvl,o.skills.j2.lvl}
！！！可以使用{u.adopt_owner.xx}获得宠物的主人的某个属性，其中xx为属性名称,如{u.adopt_owner.lvl},{o.adopt_owner.skills.j1.lvl}
！！！可以使用u.skills.skill_id.name=***设置人物的技能属性，其中skill_id为某个技能id，name为属性名称，如u.skills.j1.lvl=50
！！！可以使用u.adopt_owner.xx设置宠物的主人的某个属性，其中xx为属性名称如u.adopt_owner.hp=100
帮战的时候，玩家战胜战败事件里面，原来的是否比武is_practice和是否pk的is_pk
值都是0，是否帮战is_clan_combat这个值为1

{u.refresh_time}为房间离下次刷新的时间（单位分钟）

！！！{c.area}表示游戏的分区

{c.time}表示一个秒数，从公元1970年1月1日到当前一共是多少秒。
{c.year},{c.month},{c.date},{c.day},{c.hour},{c.minute},{c.second}，英文字面的含义。
npc的创建事件可以使用触发对象o，可能是场景或玩家：如场景自动刷新的npc则o为场景id（因为是场景创建了npc），若是事件里玩家挑战人物主动创建的npc则为玩家id（玩家行为导致npc生成）

！！！{u.clan.***}可以得到用户帮派的一些属性，其他***是属性名，可以为下面的：
id：帮派的ID
name：帮派名
lvl：帮派的等级
exp：帮派的经验
max_exp：帮派的最大经验
max_members：帮派最大的成员数
tenet：帮派宗旨
chair_name：帮主的称号
chairman：帮主的ID
era_clan_members：帮派现在的成员数

{ut.is_computer}为0时表示使用手机，为1时表示使用电脑，等于2时表示用户离线。
{u.env.***}可以取到用户当前所在场景的属性。***是场景的某个属性名。
场景的特殊属性：
justmid：上一场景id
nowmid：当前场景id
name：场景名称
user_count：玩家总数
npc_count：NPC总数
item_count：物品总数
！！！npc_count.id：某个id的NPC数量
！！！item_count.id：某个id的物品数量
！！！如：{u.env.npc_count.n1}

12、任务
可以给NPC、房间、物品定义任务。任务在玩家查看NPC（或房间、物品）时会触发。任务有触发条件，接受条件等。触发条件可以是如：{u.lvl}>=10，表示玩家达到10级时候可以触发此任务；接受条件是指玩家虽然能触发此任务，
但还必须达到此条件时才能接受到。
任务的接受事件是在玩家接受任务时执行的。
完成事件是指玩家完成了任务后执行的事件。当然办事任务可能没有完成事件（在其它事件里可以删除此办事任务）。

接受任务：接受某个任务，不用到该任务操作点上去接任务，而是直接接受任务，进入接受事件，多用于接受中转任务。

删除任务，一般用于办事任务，（因为办事任务永远不能完成，但办事任务进程u|o.tasks.id接受就会等于2）

删除已完成任务：杀人任务和寻物任务，完成交任务后可以用删除已完成任务进行删除，用删除任务无效，可重复任务应该在那个任务的完成事件步骤里进行删除！

删除已放弃任务：删除已经放弃的任务！任务设置可以放弃后，放弃任务后用删除任务和删除已完成任务是不可以删除的，必须用删除已放弃任务进行删除。一般在可以删除的任务的删除事件步骤里设删除已放弃任务！


13、事件
特别的，系统事件只能操作c和g两个对象的设置属性和更改属性
<b>所有的注册事件，登录事件，只有第一个步骤有效。</b>
在物品事件，战斗相关事件中，触发条件失败不生成返回链接。
INPUT寿命:一个执行步骤
t=tasks
s=scene
n=npc
i=item
j=jineng=skills

名称:equips.b.name
词意:获得用户穿戴武器名称
名称:equips.0.name
词意:获得用户第一穿戴防具名称，1为第二防具名称，2为第三，以此类推得到装备对象后可以通过.embed_count得到该装备镶物的数量，.embed.n.***得到第n个镶物的属性。如0镶嵌物的装备的卸下事件，事件中u为镶入的镶物，o为镶入到的装备，镶入时只能修改o对象的属性，不能修改o.env的属性，即装备所在人物的属性



事件是非常重要的一个概念。事件有触发条件、事件步骤等。事件步骤可以有多个，但是，当事件执行到某个事件步骤而
不满足此步骤的触发条件时，后面的步骤将不会执行，如果是执行条件不满足，则跳过当前步骤，继续执行下面的步骤。
注意：如果是不满足执行条件而下面还有步骤可以执行，那么不满足条件提示语将不会显示。
事件执行顺序从上至下，首先执行【触发条件】，最后执行【用户输入】。

事件步骤可以进行的操作如下：
设置属性:如 u.lvl=1    （表示将等级设置为1级）
更改属性:如 u.exp=10，（表示将经验增加10）；又如 u.money=-10 （表示将钱减少10）
更改物品:事件执行方更改物品数量
得到装备:如字面意思，这里应该能进行交互时候双方装备所属权判定，比如得到了对方的装备那么对方装备的所属权就绑定给你，对方失去这件装备。
学会技能:如字面意思
废除技能:如字面意思
！！！触发任务:
删除任务:(仅针对办事任务，将tstate置为2)
挑战人物:
！！！收养对象：
！！！删除对象：
移动目标:如字面意思
查看玩家的id表达式：如字面意思
显示页面模板:显示ct_开头的页面，如果没有会报错。
刷新场景npc（主要针对怪物）：会找到当前场景怪物的源id，而后进行刷新。格式：怪物源id1，怪物源id2
刷新场景物品：如字面意思
用户输入：生成一个用户输入框，以便在下一个事件中能取得到这个值，寿命：一个执行步骤。
返回游戏选项，是否立即返回
第一个是当步骤触发时，下方有没有“返回游戏”四个字，用在最后一步无用。
第二个是说，执行此步骤后是否立即返回，也就是是否执行下面的步骤。
注意，当上一步骤中带有“移动目标”或“是否返回游戏是”或“ct_”时，下面的所有步骤都是不会执行的！


14、定义字符串类型的属性
如：u.name="{u.name}"+{u.added_gongji}
其中{u.added_gongji}假设是一个整数，如1234，那么这个人的名字就会被设置为如“吼天怪1234”

15、表达式中的两个符号含义
&&：并且
||：或者

16、游戏公共数据存储
如：可设置 g.test=1
然后可用 {g.test}来得到值
【特别提醒】禁止将所有会日积月累增加的信息累加到公共数据的属性中。

17、用户输入
在事件步骤中可以定义输入字段列表（字段名称，类型-字符串或数值），在接着的步
骤中可以通过
u.input.value得到输入(暂时仅支持一个输入，后续开放更多)

18、关于事件步骤里的触发条件与执行条件
如果触发条件不满足，那整个事件的执行即刻停止，也不会再执行后面的事件步骤。
如果执行条件不满足，那么表示此事件步骤不会被执行，但会继续执行后面的事件步骤。

19、选择表达式
A?B:C：三元运算符A成立则执行B，否则执行C
例如：0<1?1:0，这个表达式的运算结果是1
又如：{u.lvl}<=10?1:0，表示，如果等级小于或者等于10级，就取1，否则取0

20、f(...)查找用户对象功能
 如{f(u.input.id).name}，这样可以取到用户输入的id对应的玩家的名字，这里的f默认是玩家类型。
又如设置属性：f(u.input.id)t.test=100，设置对应id的用户的临时属性。
 f(u.input.id).money=100，设置对应id的用户的属性。

21、增加事件中发布公共信息，c.c_msg="",u|o.c_msg=""; 增加事件中发送私人信息，u|o.p_msg=""
22、事件步骤增加查看玩家和查看模板功能
23、增加自定模板：在事件中可以使用ct_xxx直接引用这个自定义模板

！！！24、仓库增加锁的概念，锁标志为u|o.n.storage_lock,n代表仓库地图id，由设计者控制如何上锁开锁,值为1则锁住，不能执行存取物品的操作，默认为0

25、增加事件步骤中可设定是否执行当前步骤后立刻返回主界面
26、增加彩色文本功能,可以使用颜色名称也可以使用颜色值，如@red@大家好@end@或@FF0000@大家好@end@（颜色名称包括："Black", "Green", "Silver", "Lime", "Gray", "Olive", "White","Yellow", "Maroon", "Navy", "Red", "Blue", "Purple", "Teal","Fuchsia", "Aqua"）
！！！27、场景增加show_user_new_line,show_npc_new_line,show_item_new_line三个属性，如果值为1则每个玩家或npc或物品将会每个对象显示一行
28、增加首页页面模板定义
29、增加c.id,c.name,c.desc,c.status,c.status_string,c.creator,c.site等游戏常量，其中status与status_string的对应关系为：0-开发中，1-维护中，2-内测，3-公测
30、增加获得敌人数量u|o.enemys.count和u|o.alive.enemy_count
31、增加获得敌人对象u|o.enemys.n.***和u|o.alive_enemys.n.***
32、增加获得队友数量c.team_member_count
33、增加获得队友对象u|o.team_members.n.***或u|o.team_members.nt.***
34、事件步骤中更改属性时增加对字符串的相加功能
35、增加ut|ot.fight_umsg和ut|ot.fight_omsg设置和获得当前一招产生的描述，umsg为攻击的信息，omsg为受攻击的信息，建议直接使用功能键输出。
36、增加ut|ot.hurt_hp和ut|ot.hurt_mp获得当前一招产生的伤害值，只能在技能使用事件或出招事件中有效
37、增加ut|ot.cut_hp和ut|ot.cut_mp获得上一回合产生的总伤害
38、增加战斗场景页面模板定义
！！！39、支持页面模板导入导出功能
40、增加图片功能，支持场景、人物、物品图片，所有文本中加入#图片分区|图片标识#即可显示图片，比如#系统图片|广场通用#，或者直接在属性的图片写：系统图片|广场通用。
！！！41、增加玩家上传形象照（由于形象照占游戏空间，请在上传形象照事件中控制好条件）
！！！42、聊天可发送外部图片链接，使用<#http://...>或者<#http://...|显示名称>
！！！43、表达式增加一些字符串函数功能
num(...)将字符串值转为数值，如num(o.value)
len(...)检测字符串长度，如len(u.name)
str(..., s)检测一个目标字符串在字符串变量中的位置，其中第一个参数为原字符串，必须为变量，第二个参数可以是字符串或变量，如果是字符串则必须以#开头，不存在则返回-1
如str(u.desc, #你好)，或者str(u.desc, u.name)
假如u.desc为0123456789，那么str(u.desc, #456)返回4
sub(..., from, end)截取字符串，第一个参数为目标字符串，必须为变量，第二个参数为起始位置(第一个字符为0)，
第三个参数为结束位置（可缺省，表示到结束，不包含结束位置的字符），位置可以为负数，-1表示最后一个字符
如：假如u.desc为abcdefg，那么sub(u.desc,3)返回defg，sub(u.desc,-3)返回efg，sub(u.desc,2,4)返回cd，sub(u.desc,4,-1)返回ef
！！！44、优化聊天，玩家发言与系统发言分开(设计时注意尽量避免频繁发布系统消息，以免查看消息时玩家消息内容较少)
！！！45、玩家页面拆分操作列表，可单独定义各项操作
！！！46、统计玩家仓库物品属性{u.icc.i100}，表示玩家仓库i100物品数量，但无法在场景公共事件中扣除仓库物品。如出现bug等情况可使用{u.ic.i100}+{u.icc.i100}做为执行条件在玩家登陆事件中或查看公共场景中扣除背包中的物品。
47、增加排行榜的属性取值gph和gphn，不支持设置属性，更改排行榜属性等。
gph属性说明：{gph.0.0.id}:表示第1个排行榜第1个玩家id，{gph.0.3.name}:表示第1个排行榜第4个玩家name，{gph.3.5.score}:表示第4个排行榜第6个玩家的排行值。注意排行榜顺序会因修改榜名，排行值而发生变化，使用gph值取数据时最好先确认榜顺序及取值是否正确。
gphn属性说明：{gphn.武力榜.0.id}:表示武力榜的第1个玩家id，{gphn.武力榜.3.name}:表示武力榜的第4个玩家name，{gphn.武力榜.5.score}:表示武力榜第6个玩家的排行值。gphn 按排行榜名字取值，不支持排行榜中含有特殊字符，包括换行等字符。
！！！48.新增设计后台--游戏管理--全局搜索
！！！49.新增事件步骤中物品、电脑人物、技能等，新增查找功能
！！！50.新增装备页面模板，在自定义页面中启用装备模板即可
！！！51.新增数值转换函数stru，用于转换数值较大的显示为xx亿xx万xx，用法参考{stru(u.money)}  
！！！52.优化玩家普通挂售和拍卖行挂售的银两显示，挂售价格显示：xx亿xx万
！！！53.新增帮派属性{u.clan.chairman0} 表示第一个副帮主ID,{u.clan.rector0} 表示第一个分堂堂主,默认第一分堂是帮众。如果需要取副帮主名字等可以用{f(u.clan.chairman0).name} ,需要玩家在线.
！！！54.新增战斗逃跑设置。优化触发提示语等字符长度。

55.地图，物品和npc新增导出数据到excel。
56.现在，在地图的npc设计模块可以进行显示条件的编辑。
<a href="?cmd=$gm_main">返回设计大厅</a>
HTML;
echo nl2br($html);
?>